package io.renren.modules.business.util;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 根据Html生成静态网页
 *
 * @author liao mengqing
 */
public class HtmlToPagesUtils {

    public static final String HTML_PATH = new FilePathUtils().getHtmlPath();

    /**
     * 新建Html文件，并写入String
     *
     * @param htmlString 代保存字符串
     * @return
     */
    public String toHtml(String htmlString) {
        //被保存文件的文件名
        String htmlName = String.valueOf(System.currentTimeMillis());
        //被保存文件的父级文件夹目录
        String UPLOAD_HTML_PATH = HTML_PATH + htmlName + "\\";
        File dir = new File(UPLOAD_HTML_PATH);
        //一、检查放置文件的文件夹路径是否存在，不存在则创建
        if (!dir.exists()) {
            //mkdirs创建多级目录
            dir.mkdirs();
        }
        File checkFile = new File(UPLOAD_HTML_PATH + htmlName + ".html");
        try {
            FileWriter writer = null;
            //二、检查目标文件是否存在，不存在则创建
            if (!checkFile.exists()) {
                //创建目标文件
                checkFile.createNewFile();
            }
            //三、向目标文件中写入内容
            // FileWriter(File file, boolean append)，append为true时为追加模式，false或缺省则为覆盖模式
            writer = new FileWriter(checkFile, true);
            writer.append(htmlString);
            writer.flush();
            writer.close();
        }catch (IOException e) {
            e.printStackTrace();
        }
        String fullUrl = checkFile.toString();
        return  fullUrl;
    }

    /**
     * 删除指定文件夹下所有文件
     * @param path 文件夹完整绝对路径
     */
    public boolean delAllFile(String path) {
        boolean flag = false;
        File file = new File(path);
        if (!file.exists()) { return flag; }
        String[] tempList = file.list();
        File temp = null;
        for (int i = 0; i < tempList.length; i++) {
            if (path.endsWith(File.separator)) {
                temp = new File(path + tempList[i]);
            } else {
                temp = new File(path + File.separator + tempList[i]);
            }
            //是文件
            if (temp.isFile()) {
                temp.delete();
                flag = true;
            }
            //是文件夹
            if (temp.isDirectory()) {
                //先删除文件夹里面的文件
                delAllFile(path + "/" + tempList[i]);
                System.out.println("删除文件夹里的文件");
                //再删除空文件夹
                delFolder(path + "/" + tempList[i]);
                flag = true;
            }
        }
        return flag;
    }

    /**
     * 删除文件夹
     * @param folderPath 文件夹完整绝对路径
     */
    private void delFolder(String folderPath) {
        try {
            //删除完里面所有内容
            delAllFile(folderPath);
            String filePath = folderPath;
            filePath = filePath.toString();
            java.io.File myFilePath = new java.io.File(filePath);
            //删除空文件夹
            myFilePath.delete();
            System.out.println("删除空文件夹");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
